

var msgClass = {
    tip:"tishi",
    error:"tishierror",
    correct:"tishisuc"
};
var correctMsg = "填写正确";
var requiredMsg = "此项为必填项";
function error(id, msg) {
    showMsg(validation[id].errorContainer(), msgClass.error, msg);
}
function ok(id) {
    showMsg(validation[id].errorContainer(), msgClass.correct, correctMsg);
}

function showMsg(p, cls, msg) {
    var tip = p.next(".tishi,.tishierror,.tishisuc").toArray();
    if (tip.length == 0) {
        tip = $("<div/>").insertAfter(p).toArray();
    }
 
    $(tip[0]).attr({"class":cls}).html(msg);
}

function required(elId) {
    if ($("#" + elId).is("input")) {
        var value = $("#" + elId).val();
        var len = $.trim(value).length;
        if (len == 0) {
            error(elId, "此项为必填项");
            return false;
        }
    }
    return true;
}

function isNullValue(id,value,text){
	if($.trim($("#"+id).val()) == value){
	   alert(text+"不能为空,请重新输入！");
	   $("#"+id).focus();
	   return false;
	}else{
		return true;
	}
}
function isLength(id,min,max,text) {
	if($.trim($("#"+id).val()) == ""){
	   alert( text+"不能为空,请重新输入！");
	   $("#"+id).focus();
	   return false;
	}else {
		if($("#"+id).val().length >parseInt(max)){
			alert( text+"太长,请重新输入！");
			$("#"+id).focus();
			return false;
		}
		if($("#"+id).val().length < parseInt(min)){
			alert(text+"太短,请重新输入！");
			$("#"+id).focus();
			return false;
		}
		return true;
	}
}

function checkByteLength(str, minlen, maxlen) {
    var blen = getByteLength(str);
    return !(blen > maxlen || blen < minlen);
}

function getByteLength(str) {
    if (str == null) return 0;
    var l = str.length;
    var blen = 0;
    for (var i = 0; i < l; i++) {
        if ((str.charCodeAt(i) & 0xff00) != 0) {
            blen ++;
        }
        blen ++;
    }
    return blen;
}
function isNumberContinue(str) {
    var ascendNumber = 0;
    var descendNumber = 0;

    for (var i = 1; i < str.length; i++) {
        if (str.charAt(i).charCodeAt(0) != (str.charAt(i - 1).charCodeAt(0) + 1)) {
            ascendNumber = 1;
            break;
        }
    }

    for (i = 0; i < (str.length - 1); i++) {
        if (str.charAt(i).charCodeAt(0) != (str.charAt(i + 1).charCodeAt(0) + 1)) {
            descendNumber = 1;
            break;
        }
    }
    if (descendNumber == 0 || ascendNumber == 0) {
        return 1;
    } else {
        return 0;
    }
}
function isSameLetter(str) {
    var sameNumberFlag = 1;
    var patn1 = /^[0-9]+$/;
    if (patn1.test(str)) {
        for (var i = 0; i < str.length; i++) {
            if (str.charAt(0) != str.charAt(i)) {
                sameNumberFlag = 0;
                break;
            }
        }
    } else {
        for (var j = 0; j < str.length; j++) {
            if (str.charAt(0) != str.charAt(j)) {
                sameNumberFlag = 0;
                break;
            }
        }
    }
    return sameNumberFlag;
}

// 检测用户名
function checkusername(obj){
	if (!/^[a-zA-Z0-9]+$/.test(obj) || !checkByteLength(obj, 6, 15)) {
        error(elId, "填写有误，请您重新输入");
        return false;
    }
	
}

//检测是否为数字
function checkSz(obj){
	if(/\D/.test(obj.value)){
		alert('只能输入数字');
		obj.value='';
		obj.focus();
	}
}

var validation = {
	 
	    username:{
	        tip:"4-15个数字或英文字母组成，不支持中文",
	        errorContainer:function() {
	            return $("#username").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	        	
	            if (!required(elId)) {
	                return false;
	            }
	            var value = $("#" + elId).val();
	            if (!/^[a-zA-Z0-9]+$/.test(value) || !checkByteLength(value, 4, 15)) {
	                error(elId, "填写有误，请您重新输入");
	                return false;
	            }
	            if (value == $("#password").val()) {
	                error("password", "密码与用户名相同，为安全起见，请重新设置");
	            }
	            return true;
	        },
	        validOK:function(elId){
	            showMsg(validation.username.errorContainer(),msgClass.tip,"检测中...");
	            $.ajax({
					  url: "/tjson/finduser.do?account="+$("#username").val(),
					  type:'post',
					  dataType:'json', 
					  success: function(fdata){
					  	 var userid=fdata.userId;
					  	 if (userid!=0){
					  		 error(elId, "该会员已存在，请重新输入");
					  		 $("form").data("userOk", false);
					  	 }else{
					  		$("form").data("userOk", true);
		                    ok(elId);
			
					  	 }
					   }
					  }); 
	        }
	    },
	    password:{
	        tip:"6-20位字符组成区分大小写，不能与用户名、联系方式相同。",
	        errorContainer:function() {
	            return $("#password").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            var value = $("#" + elId).val();
	            if (!checkByteLength(value, 6, 20)) {
	                error(elId, "输入有误，请重新设置");
	                return false;
	            }
	            if (isNumberContinue(value) || isSameLetter(value)) {
	                error(elId, "密码过于简单，为安全起见，请重新设置");
	                return false;
	            }
	            if (value == $("#username").val()) {
	                error(elId, "密码与用户名相同，为安全起见，请重新设置");
	                return false;
	            }
	            if ($("#email").val().indexOf(value) > -1) {
	                error(elId, "密码与电子邮箱相同，为安全起见，请重新输入");
	                return false;
	            }
	            return true;

	        }
	    },
	    repassword:{
	        tip:"请再次输入您的密码",
	        errorContainer:function() {
	            return $("#repassword").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            if (!required("password")) {
	                error(elId, "请先输入密码，再进行确认");
	                return false;
	            }
	            if ($("#" + elId).val() != $("#password").val()) {
	                error(elId, "输入有误，两次密码内容不符");
	                return false;
	            }
	            return true;
	        }
	    },
	    email:{
	        tip:"请输入常用的电子邮箱，以便找回密码",
	        errorContainer:function() {
	            return $("#email").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            var value = $("#" + elId).val();
	            if (!/^\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,6}$/i.test(value)) {
	                error(elId, "电子邮箱格式不正确，请重新输入");
	                return false;
	            }
	            if ($("#password").val().indexOf(value) > -1) {
	                error("password", "密码与电子邮箱相同，为安全起见，请重新输入");
	            }
	            return true;
	        },
	        validOK:function(elId){
	            showMsg(validation.email.errorContainer(),msgClass.tip,"检测中...");
	            $.ajax({
					  url: "/tjson/findemail.do?email="+$("#email").val(),
					  type:'post',
					  dataType:'json', 
					  success: function(fdata){
					  	 var isexist=fdata.isexist;
					  	 if (isexist!=0){
					  		 error(elId, "该Email已使用，请重新输入");
					  		 $("form").data("emailOk", false);
					  	 }else{
					  		$("form").data("emailOk", true);
		                    ok(elId);
			
					  	 }
					   }
					  }); 
	        }
	    },
	    corpName:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#corpName").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if(!required(elId)){
	                return false;
	            }
	            if(isNumberContinue($("#"+elId).val()) || isSameLetter($("#"+elId).val()) || !isNaN($("#"+elId).val())) {
	                error(elId,"公司名称错误，公司名称不能用连续的字符或完全使用数字表示");
	                return false;
	            }
	            return true;
	        }
	    },
	    realName:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#realName").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	        	var value = $("#" + elId).val();
	        	
	            return required(elId);
	        }
	    },
	    zone:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#zone").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            var zoneV = $.trim($("#" + elId).val());
	            var telV = $.trim($("#tel").val());
	            if ((zoneV.length==0 && telV==0) ||(zoneV=="区号" && telV=="电话号码")) {
	                error(elId, requiredMsg);
	                return false;
	            }
	            if ((!/^\d+$/.test(zoneV) || zoneV.length != 4 &&zoneV.length != 3)) {
	                error(elId, "区号错误，中国地区的区号只能是3或4位");
	                return false;
	            }
	            if (zoneV.length == 0 || telV == 0 || telV=="电话号码" || zoneV=="区号") {
	                error(elId, "请填写完整的电话号码");
	                return false;
	            }

	            return true;
	        }
	    },
	    tel:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#tel").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            var telV = $.trim($("#" + elId).val());
	            if (!validation.zone.validate("zone")) {
	                return false;
	            }
	            if (!/^\d+$/.test(telV) || (telV.length!=8 && telV.length!=7)) {
	                error(elId, "电话号码错误，中国地区的电话号码只能是7或8位");
	                return false;
	            }
	            validation.password.validate("password");
	            return true;
	        }
	    },
	    extTel:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#extTel").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if (!validation.tel.validate("tel")) {
	                return false;
	            }
	            var value = $.trim($("#" + elId).val());
	            if(value=="分机(选填)"||value.length==0){
	                return true;
	            }
	            if (!/^\d+$/.test(value) || value.length > 6) {
	                error(elId, "请输入正确的分机号码");
	                return false;
	            }
	            return true;
	        }
	    },
	    mobile:{
	        tip:"便于客户联系",
	        errorContainer:function() {
	            return $("#mobile").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            var value = $("#" + elId).val();
	            if (value.length == 0) {
	                return true
	            } else if (!/^[0-9]+$/.test(value) || getByteLength(value) != 11) {
	                error(elId, "您输入的号码不正确，请重新输入");
	                return false;
	            }
	            if ($("#password").val().indexOf(value) > -1) {
	                error("password", "密码与手机相同，为安全起见，请重新输入");
	            }
	            return true;
	        },
	        validOK:function(elId) {
	            if(!required(elId)){
	                validation[elId].errorContainer().next(".tishi,.tishierror,.tishisuc").remove();
	            }else{
	                ok(elId);
	            }
	        }
	    },
	    business_cert:{
	        tip:"我们将保障您信息的隐私，请如实填写",
	        errorContainer:function() {
	            return $("#business_cert").parents(".reg_m_list")
	        },
	        validate:function(elId) {
	            if ($("#business_cert").val()=="") {
	            	 error(elId, "请选择上传文件");
	            	 return false;
	            }else{
	            	ok(elId);
	            }
	            var value = $("#" + elId).val();
	            var strRegex =/\.((jpg)|(gif)|(bmp)|(png)|(jpeg))$/ig; 
	    		var re=new RegExp(strRegex);
	            if (!re.test(value)) {
	                error(elId, "您指定的格式不合适，请检查后重试。");
	                return false;
	            }
	            return true;
	         }
	        },
	    rand:{
	        tip:"请将图片内的数字填写到输入框中",
	        errorContainer:function() {
	            return $("#rand").parents(".regmgx");
	        },
	        validate:function(elId) {
	            if (!required(elId)) {
	                return false;
	            }
	            return true;
	        },
	        validOK:function(elId){
	        	showMsg(validation.rand.errorContainer(),msgClass.tip,"检测中...");
	        	 $.ajax({
					  url: "/tjson/findrand.do?rand="+$("#rand").val(),
					  type:'post',
					  dataType:'json', 
					  success: function(fdata){
					  	 var isexist=fdata.isexist;
					  	 if (isexist!=0){
					  		 error(elId, "验证码输入错误");
					  		 $("form").data("randOk", false);
					  	 }else{
					  		$("form").data("randOk", true);
		                    ok(elId);
			
					  	 }
					   }
					  }); 
	        }
	    }
	};


///


$().ready(function() {
	 for (var id in validation) {
       $("#" + id).bind("focusin",
                       function() {
                           showMsg(validation[this.id].errorContainer(), msgClass.tip, validation[this.id].tip);
                       }).bind("focusout", function() {
           if (validation[this.id].validate(this.id)) {
               if (validation[this.id].validOK) {
                   validation[this.id].validOK(this.id)
               } else {
                   ok(this.id)
               }
           }
        });
        }
	
	  $("form").submit(function() {
	        var result=true;
	        var errorId=false;
	        for (var id in validation) {
	            if (!validation[id].validate(id)) {
	                !errorId?errorId=id:"";
	                result=false;
	            }
	        }
	        if (!$(this).data("userOk")){
	            !errorId?errorId="username":"";
	            if(validation.username.errorContainer().next("."+msgClass.error).length==0){
	                showMsg(validation.username.errorContainer(),msgClass.error,"该会员已存在，请重新输入");
	            }
	            result=false;
	        }
	        if (!$(this).data("emailOk")){
	            !errorId?errorId="email":"";
	            if(validation.email.errorContainer().next("."+msgClass.error).length==0){
	                showMsg(validation.email.errorContainer(),msgClass.error,"该Email已使用，请重新输入");
	            }
	            result=false;
	        }
	        if (!$(this).data("randOk")){
	            !errorId?errorId="rand":"";
	            if(validation.rand.errorContainer().next("."+msgClass.error).length==0){
	                showMsg(validation.rand.errorContainer(),msgClass.error,"验证码输入有误，请重新输入");
	            }
	            result=false;
	        }
	        
	      
	        if(!result){
	            if($("#"+errorId).length!=0){
	                $(window).scrollTop($("#"+errorId).position().top);
	            }

	            return false;
	        }
	    	$(".regbtn").unbind("click"); 
	        return true;
	    });
$(".regbutt").click(function() {
	$("form").submit();
    
});



$("#password").bind("paste",function(){return false;});
$("#repassword").bind("paste",function(){return false;});

$("#mobile,#zone,#tel,#extTel").keyup(function(event){
	if(event.keyCode!=37&&event.keyCode!=39) {
		var tmptxt=$(this).val();
		$(this).val(tmptxt.replace(/\D/g,''));
	}
}).bind("paste",function(){
	var tmptxt=$(this).val();
	$(this).val(tmptxt.replace(/\D/g,''));
}).css("ime-mode", "disabled");


$(document).bind('keydown',function(event){
	if(event.keyCode==13){
		$("form").submit();
	}
});

});



